Computer networks such as the Internet can include many types of computer systems and network device such as routers and switches that are coupled together via data links to exchange information using data communications. Computer systems on such a network can communicate with each other and the network devices via various data communications protocols. As an example, a suite of protocols that computer systems and other devices use for data communications on the Internet provides what is known as the World Wide Web or simply the web. The primary protocol used for World Wide Web communications is the Hyper Text Transfer Protocol or HTTP.
According to the conventional operation of the World Wide Web, a user of a client computer can operate web browser software on the client computer to initiate a request for data from a web site. The client computer provides the HTTP request to a web site that can include a web cache or web server computer. The request identifies a specific portion of data such as a web page that a server or cache within the web site is to return to the client. In a typical configuration, one or more network devices such switches or routers operate as a “front-end” to the web site and receive the HTTP requests from client computers and control access to web server or cache computers within the web site. In such a configuration, a service provider, such as an Internet Service Provider (ISP) operating the web site, can provide multiple servers to provide responses to large numbers of requests provided by client computer users. Some network devices, such as content switches, can receive a request and determine from the content requested within the request that a specific server within the web site should respond to the request. Thus, the network device that initially receives a request (i.e., receiving device, such as a switch or router) does not necessarily provide the response directly, but can route the request to another network device, web cache, or web server to handle the response to the request.
More specifically, in a typical scenario of a reverse proxy environment in a data center, a web cache (e.g., server or router) can maintain a cache of content (e.g., web pages) that is frequently requested from client computers. The content itself originates from one or more web servers that reside within the web site “behind” the web cache (i.e., the cache caches the content in response to an initial request for the content that is handled by a web server). Thus, the web cache can often respond to clients' requests without having to obtain data from the servers in the web site or data center. As described above, a network device such as a router or switch (e.g., content aware switch) can serve as the receiving device that initially receives the request from a client computer, and then forwards the request to the web cache. If there is a cache miss (i.e., the data is not available in the cache), then the web cache can obtain the data from one of the web servers in the data center. In another configuration, in the event of a cache miss, the web cache sends the request back to the network device (e.g., switch) that initially received the request which then directs the request to an appropriate web server depending upon load or other criteria.
Various conventional redirection approaches allow a network device that receives an incoming request to redirect the request received to another network device, or to a web cache or web server to handle processing the response to the request. In one particular redirection approach, the receiving network device determines a redirect is required and sends an HTTP redirect request back to the client computer that indicates, to the client, an IP (Internet Protocol) address of a content server that can properly provide the requested content. Typically, the client can respond to the HTTP redirect request by terminating any TCP (Transmission Control Protocol) connection the client has established with the first receiving network device and by establishing a new TCP connection with a content server indicated in the redirect request. After establishing the new TCP connection with the indicated content server, then the client can send a new HTTP request to the content server over the newly established TCP connection. The content server can then provide the content requested in the HTTP request back to the client.
In another conventional approach to managing requests, the receiving network device (e.g., switch or router) translates the network addresses of the request and response so that the web server within the web site views the request as coming from the receiving network device, and the client views the response as also coming from the receiving network device. The approach is referred to as “Network Address Translation” (NAT), and is described in RFC 1631 of the Internet Engineering Task Force, entitled “The IP Network Address Translator (NAT),” the disclosure, teaching and contents of which are hereby incorporated by reference in their entirety. Typically, the NAT redirect approach is used if the receiving device serves as a proxy or intermediary for a group of web servers in a restricted domain (i.e., stub domain) having private IP addresses for use within the stub domain, but which are not made available (i.e., resolvable) globally to the Internet because, for example, they would conflict with the IP addresses used by other devices on the Internet. In such a case, the receiving device (e.g., stub router) has a public, globally available IP address and receives requests from clients to be serviced by servers in the stub domain.
In a conventional approach to managing a request from a client to data in a web cache, the web cache can locate a requested web object (e.g., page) from another web cache by exchanging messages with the other cache, as described in RFC 2186 of the Internet Engineering Task Force, entitled “Internet Cache Protocol (ICP), Version 2” the disclosure, teaching and contents of which are hereby incorporated be reference in their entirety. For example, a client can send a request for a web object to a web cache, and the web cache can send an ICP query to another web cache asking whether the other web cache has that particular web object.
In a conventional approach to managing multiple requests, a client can send multiple requests over the same persistent TCP connection. Also, using a technique called “request pipelining”, as supported by HTTP version 1.1, requests can be sent on the same persistent connection without waiting for the response to each request. As an example of HTTP request pipelining, the client computer can establish a persistent TCP connection with a web server, and can then send more than one request for respective portions of data to the same web server over the same TCP connection without re-establishing a new TCP connection for each request and without waiting for a response from a former request before sending the next request.